# -*- codeing = utf-8 -*-
# @Time : 2021/2/26 18:13
# @Atuthor: 朱朱
# @File: 115单例设计练习.py
# @Software: PyCharm
""
"""
# 定义一个类属性，记录通过这个类创建了多少个对象
1.给出一个类
2.给出一个计数器,记录次数
3.调用new方法的时候,计数器累加
4.给出一个方法,返回计数器,供外部调用
"""
class Person(object):
    __count = 0 # 类的私有属性

    def __new__(cls, *args, **kwargs):
        cls.__count +=1
        return object.__new__(cls)
    def __init__(self,name, age):
        self.name = name
        self.age = age

    @classmethod
    def get_count(cls):
        return cls.__count

p1 = Person('jack',18)
p2 = Person('tony',18)
p3 = Person('tom',18)

print(Person.get_count()) # 3 创建了三个对象
# 每次创建对象，都会调用 __new__ 和 __init__ 方法
# 调用 __new__ 方法，用来申请内存
# 如果不重写 __new__ 方法，它会自动找 object 的 __new__
# object的 __new__ 方法，默认实现是申请了一段内存，创建一个对象

p4 = object.__new__(Person)
print(p4)
print(p4.get_count()) # 3
p4.__init__('luck',18)
print(p4.get_count()) # 3
